package com.enjoyor.soa.traffic.api.service.dubbo.redis;

import java.util.List;
import java.util.Map;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

//@Service(protocol = { "dubbo" })
public interface DubboRedisHashService {
	/**
	 * 
	 * @Title: hdel
	 * @Description: 删除一个或多个哈希表字段
	 * @param key
	 * @param fields
	 * @return: void
	 */
	public ResultPojo hdel(String key,String[] fields);
	/**
	 * 
	 * @Title: hexists
	 * @Description: 删除一个或多个哈希表字段
	 * @param key
	 * @param field
	 * @return: void
	 */
	public ResultPojo hexists(String key,String field);
	/**
	 * 
	 * @Title: hget
	 * @Description: 获取存储在哈希表中指定字段的值。
	 * @param key
	 * @param field
	 * @return
	 * @return: String
	 */
	public ResultPojo hget(String key,String field);
	/**
	 * 
	 * @Title: hgetall
	 * @Description: 获取在哈希表中指定 key 的所有字段和值
	 * @param key
	 * @return
	 * @return: Map<String,String>
	 */
	public ResultPojo hgetall(String key);
	/**
	 * 
	 * @Title: hkeys
	 * @Description: 获取所有哈希表中的字段
	 * @param key
	 * @return
	 * @return: ResultPojo
	 */
	public ResultPojo hkeys(String key);
	/**
	 * 
	 * @Title: hmget
	 * @Description: 获取所有给定字段的值
	 * @param key
	 * @param fields
	 * @return
	 * @return: String[]
	 */
	public ResultPojo hmget(String key,String[] fields);
	/**
	 * 
	 * @Title: hsget
	 * @Description: 将哈希表 key 中的字段 field 的值设为 value 。
	 * @param key
	 * @param field
	 * @param value
	 * @return
	 * @return: ResultPojo
	 */
	public ResultPojo hset(String key,String field,String value);
	/**
	 * 
	 * @Title: hsgetnx
	 * @Description: 只有在字段 field 不存在时，设置哈希表字段的值。
	 * @param key
	 * @param field
	 * @param value
	 * @return: void
	 */
	public ResultPojo hsetnx(String key,String field,String value);
	/**
	 * 
	 * @Title: hvals
	 * @Description: 获取哈希表中所有值
	 * @param key
	 * @return
	 * @return: List<String>
	 */
	public ResultPojo hvals(String key);
	/**
	 * 
	 * @Title: hgetAllPipeline
	 * @Description: 根据key批量获取哈希表
	 * @param keylist
	 * @return
	 * @return: List<Map<String,Object>>
	 */
	public ResultPojo hgetAllPipeline(List<String> keylist);
	/**
	 * 
	 * @Title: hmsetPipeline
	 * @Description: 批量设置哈希表的值
	 * @param list
	 * @return: void
	 */
	public ResultPojo hmsetPipeline(Map<String, Map<String, Object>> list); 
}
